
import { defineConfig } from 'vite'
import { resolve } from 'path'
import { terser } from 'rollup-plugin-terser';
import { builtinModules } from 'module';
// console.log(builtinModules, 'builtinModules');
export default defineConfig({
  build: {
    minify: false, // 禁用 Vite 的默认压缩
    lib: {
      entry: resolve(__dirname, 'src/main.ts'),
      formats: ['es'],
      fileName: 'index'
    },
    rollupOptions: {
      external: [
        ...builtinModules,
      ], // 将node内置模块列为外部依赖
      // 确保生成的代码最小化

      output: {
        banner: '#!/usr/bin/env node',
        // 修改入口文件的后缀
        entryFileNames: 'index.mjs',
        chunkFileNames: '[name].mjs',
        manualChunks(id, { getModuleInfo }) {
          if (id.includes('node_modules')) {
            // 检查模块是否被引用
            const moduleInfo = getModuleInfo(id)
            if (!moduleInfo?.importers?.length) {
              return null // 如果模块没有被引用，不打包
            }

            // 获取包名
            const packageName = id.match(/node_modules\/([^/]+)/)?.[1] ?? 'vendors'
            return `vendor-${packageName}`
          }
          
        },
        plugins: [
          //   sizeLimitPlugin(), // 自定义插件
          terser({
            compress: {
              // drop_console: true, // 删除 console.log
              // drop_debugger: true, // 删除 debugger 语句
              unused: true, // 删除未使用的代码
            },
            mangle: {
              toplevel: true, // 混淆顶层作用域的变量
            },
            output: {
              beautify: false, // 不保留美化格式，压缩为一行
              indent_level: 0, // 不缩进
              comments: false, // 删除所有注释
              ascii_only: true, // 确保所有输出字符是 ASCII 字符
            },
          }),
        ],
      },

    },
    outDir: 'dist',
    target: 'node14'
  },

}) 